package br.com.salao.model;

import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import org.apache.log4j.Logger;

import br.com.salao.entity.Funcionario;
import br.com.salao.session.FuncionarioBase;
import br.com.salao.util.Utils;

public class FuncionarioModel {

	private Logger logger = Logger.getLogger(FuncionarioModel.class.getName());

	public Funcionario incluir(Funcionario funcionario){		

		try{						
			FuncionarioBase funcionarioBase = getBean();
			return funcionarioBase.incluir(funcionario);

		}catch (Exception e) {

			StringBuffer sb = new StringBuffer();
			sb.append(e.getCause() + "\n");
			sb.append(e.getMessage() + "\n");			
			logger.error(sb.toString());

			return null;
		}
	}

	public List<Funcionario> buscarFuncionariosPorIdEstabelecimento(int idEstabelecimento){

		try{						
			FuncionarioBase funcionarioBase = getBean();
			return funcionarioBase.buscarFuncionariosPorIdEstabelecimento(idEstabelecimento);

		}catch (Exception e) {
			StringBuffer sb = new StringBuffer();
			sb.append(e.getCause() + "\n");
			sb.append(e.getMessage() + "\n");			
			logger.error(sb.toString());			
			return null;
		}		
	}

	public Funcionario buscarFuncionariosPorId(int id){

		try{				
			FuncionarioBase funcionarioBase = getBean();
			return funcionarioBase.buscarFuncionariosPorId(id);

		}catch (Exception e) {
			StringBuffer sb = new StringBuffer();
			sb.append(e.getCause() + "\n");
			sb.append(e.getMessage() + "\n");			
			logger.error(sb.toString());
			return null;
		}
	}

	public FuncionarioBase getBean() throws Exception {

		Properties prop = Utils.getProperties();     
		Context ctx = new InitialContext(prop); 
		Object ref = ctx.lookup(prop.getProperty("FUNCIONARIO_LOOKUP"));       

		return (FuncionarioBase)PortableRemoteObject.narrow(ref, FuncionarioBase.class);
	}
}
